/**
 * 访问历史记录工具
 * 用于记录用户访问过的页面
 */

const STORAGE_KEY = 'recent_visited_pages'
const MAX_HISTORY = 20 // 最多保存20条历史记录

/**
 * 获取页面标题（从路由meta或菜单配置）
 */
export function getPageTitle(route) {
  return route.meta?.title || route.name || '未命名页面'
}

/**
 * 获取页面图标
 */
export function getPageIcon(route) {
  return route.meta?.icon || 'Document'
}

/**
 * 获取页面所属模块
 */
export function getPageModule(route) {
  // 从路径推断模块
  const pathSegments = route.path.split('/').filter(s => s)
  
  if (pathSegments.length === 0) return '首页'
  
  const moduleMap = {
    'dashboard': '工作台',
    'sales': '销售管理',
    'purchase': '采购管理',
    'inventory': '库存管理',
    'finance': '财务管理',
    'member': '会员管理',
    'reports': '报表中心',
    'system': '系统管理',
    'lowcode': '低代码平台',
    'hr': '人力资源',
    'office': '办公管理',
    'learning': '学习中心',
    'manufacturing': '生产制造',
    'logistics': '物流管理',
    'equipment': '设备管理',
    'asset': '资产管理',
    'contract': '合同管理',
    'project': '项目管理',
    'mall': '商城DIY',
    'cockpit': '数据驾驶舱',
    'forecast': '智能预测',
    'basedata': '基础资料',
    'extensions': '扩展中心',
    'reconciliation': '对账管理'
  }
  
  return moduleMap[pathSegments[0]] || '其他'
}

/**
 * 获取模块颜色
 */
export function getModuleColor(module) {
  const colorMap = {
    '工作台': '#667eea',
    '销售管理': '#84fab0',
    '采购管理': '#a8edea',
    '库存管理': '#fa709a',
    '财务管理': '#fccb90',
    '会员管理': '#f77062',
    '报表中心': '#e0c3fc',
    '系统管理': '#c471f5',
    '低代码平台': '#667eea',
    '人力资源': '#84fab0',
    '办公管理': '#a8edea',
    '学习中心': '#fa709a',
    '生产制造': '#fccb90',
    '物流管理': '#f77062',
    '设备管理': '#e0c3fc',
    '资产管理': '#c471f5'
  }
  return colorMap[module] || '#409EFF'
}

/**
 * 保存访问记录
 */
export function saveVisitHistory(route) {
  try {
    // 排除某些不需要记录的路径
    const excludePaths = ['/login', '/404', '/403', '/500']
    if (excludePaths.includes(route.path)) {
      return
    }
    
    // 获取现有历史
    let history = JSON.parse(localStorage.getItem(STORAGE_KEY) || '[]')
    
    // 移除重复的路径
    history = history.filter(item => item.path !== route.path)
    
    // 添加新记录到开头
    const newRecord = {
      title: getPageTitle(route),
      path: route.path,
      iconName: getPageIcon(route),
      module: getPageModule(route),
      color: getModuleColor(getPageModule(route)),
      time: new Date().toLocaleString('zh-CN', {
        month: '2-digit',
        day: '2-digit',
        hour: '2-digit',
        minute: '2-digit'
      }),
      timestamp: Date.now()
    }
    
    history.unshift(newRecord)
    
    // 只保留最近的记录
    history = history.slice(0, MAX_HISTORY)
    
    // 保存到 localStorage
    localStorage.setItem(STORAGE_KEY, JSON.stringify(history))
    
    return newRecord
  } catch (error) {
    console.error('保存访问历史失败:', error)
    return null
  }
}

/**
 * 获取访问历史
 */
export function getVisitHistory(limit = 20) {
  try {
    const history = JSON.parse(localStorage.getItem(STORAGE_KEY) || '[]')
    return limit ? history.slice(0, limit) : history
  } catch (error) {
    console.error('获取访问历史失败:', error)
    return []
  }
}

/**
 * 清空访问历史
 */
export function clearVisitHistory() {
  try {
    localStorage.removeItem(STORAGE_KEY)
    return true
  } catch (error) {
    console.error('清空访问历史失败:', error)
    return false
  }
}

/**
 * 删除指定路径的访问记录
 */
export function removeVisitHistory(path) {
  try {
    let history = JSON.parse(localStorage.getItem(STORAGE_KEY) || '[]')
    history = history.filter(item => item.path !== path)
    localStorage.setItem(STORAGE_KEY, JSON.stringify(history))
    return true
  } catch (error) {
    console.error('删除访问历史失败:', error)
    return false
  }
}

